Type
Node Group
Version: 0.2 (default)
Description: OpenPBR Surface Shading Model.
Parameters:
Node Graph
graph LR;
NG_open_pbr_surface_surfaceshader_shader_constructor[surface] --> NG_open_pbr_surface_surfaceshader_out([out])
style NG_open_pbr_surface_surfaceshader_out fill:#0C0, color:#111
NG_open_pbr_surface_surfaceshader_fuzz_layer[layer] --".bsdf"--> NG_open_pbr_surface_surfaceshader_shader_constructor[surface]
NG_open_pbr_surface_surfaceshader_fuzz_bsdf[sheen_bsdf] --".top"--> NG_open_pbr_surface_surfaceshader_fuzz_layer[layer]
NG_open_pbr_surface_surfaceshader_fuzz_weightINT([fuzz_weight]) ==.weight==> NG_open_pbr_surface_surfaceshader_fuzz_bsdf[sheen_bsdf]
style NG_open_pbr_surface_surfaceshader_fuzz_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_fuzz_colorINT([fuzz_color]) ==.color==> NG_open_pbr_surface_surfaceshader_fuzz_bsdf[sheen_bsdf]
style NG_open_pbr_surface_surfaceshader_fuzz_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_fuzz_roughnessINT([fuzz_roughness]) ==.roughness==> NG_open_pbr_surface_surfaceshader_fuzz_bsdf[sheen_bsdf]
style NG_open_pbr_surface_surfaceshader_fuzz_roughnessINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_normalINT([geometry_normal]) ==.normal==> NG_open_pbr_surface_surfaceshader_fuzz_bsdf[sheen_bsdf]
style NG_open_pbr_surface_surfaceshader_geometry_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_layer[layer] --".base"--> NG_open_pbr_surface_surfaceshader_fuzz_layer[layer]
NG_open_pbr_surface_surfaceshader_coat_bsdf[dielectric_bsdf] --".top"--> NG_open_pbr_surface_surfaceshader_coat_layer[layer]
NG_open_pbr_surface_surfaceshader_coat_weightINT([coat_weight]) ==.weight==> NG_open_pbr_surface_surfaceshader_coat_bsdf[dielectric_bsdf]
style NG_open_pbr_surface_surfaceshader_coat_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_coat_normalINT([geometry_coat_normal]) ==.normal==> NG_open_pbr_surface_surfaceshader_coat_bsdf[dielectric_bsdf]
style NG_open_pbr_surface_surfaceshader_geometry_coat_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_modulated_coat_ior[mix] --".ior"--> NG_open_pbr_surface_surfaceshader_coat_bsdf[dielectric_bsdf]
NG_open_pbr_surface_surfaceshader_coat_weightINT([coat_weight]) ==.mix==> NG_open_pbr_surface_surfaceshader_modulated_coat_ior[mix]
style NG_open_pbr_surface_surfaceshader_coat_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_modulated_coat_ior_ratio[divide] --".fg"--> NG_open_pbr_surface_surfaceshader_modulated_coat_ior[mix]
NG_open_pbr_surface_surfaceshader_one_plus_sqrt_modulated_coat_reflectivity[add] --".in1"--> NG_open_pbr_surface_surfaceshader_modulated_coat_ior_ratio[divide]
NG_open_pbr_surface_surfaceshader_sqrt_modulated_coat_reflectivity[sqrt] --".in2"--> NG_open_pbr_surface_surfaceshader_one_plus_sqrt_modulated_coat_reflectivity[add]
NG_open_pbr_surface_surfaceshader_modulated_coat_reflectivity2[multiply] --".in"--> NG_open_pbr_surface_surfaceshader_sqrt_modulated_coat_reflectivity[sqrt]
NG_open_pbr_surface_surfaceshader_modulated_coat_reflectivity1[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_modulated_coat_reflectivity2[multiply]
NG_open_pbr_surface_surfaceshader_coat_ior_level_clamped[clamp] --".in1"--> NG_open_pbr_surface_surfaceshader_modulated_coat_reflectivity1[multiply]
NG_open_pbr_surface_surfaceshader_coat_ior_levelINT([coat_ior_level]) ==.in==> NG_open_pbr_surface_surfaceshader_coat_ior_level_clamped[clamp]
style NG_open_pbr_surface_surfaceshader_coat_ior_levelINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_ior_level_upper_bound[min] --".high"--> NG_open_pbr_surface_surfaceshader_coat_ior_level_clamped[clamp]
NG_open_pbr_surface_surfaceshader_half_over_coat_F0[divide] --".in2"--> NG_open_pbr_surface_surfaceshader_coat_ior_level_upper_bound[min]
NG_open_pbr_surface_surfaceshader_coat_ior_to_F0[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_half_over_coat_F0[divide]
NG_open_pbr_surface_surfaceshader_coat_ior_to_F0_sqrt[divide] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_ior_to_F0[multiply]
NG_open_pbr_surface_surfaceshader_coat_ior_minus_one[subtract] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_ior_to_F0_sqrt[divide]
NG_open_pbr_surface_surfaceshader_coat_iorINT([coat_ior]) ==.in1==> NG_open_pbr_surface_surfaceshader_coat_ior_minus_one[subtract]
style NG_open_pbr_surface_surfaceshader_coat_iorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_ior_plus_one[add] --".in2"--> NG_open_pbr_surface_surfaceshader_coat_ior_to_F0_sqrt[divide]
NG_open_pbr_surface_surfaceshader_coat_iorINT([coat_ior]) ==.in2==> NG_open_pbr_surface_surfaceshader_coat_ior_plus_one[add]
style NG_open_pbr_surface_surfaceshader_coat_iorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_ior_to_F0_sqrt[divide] --".in2"--> NG_open_pbr_surface_surfaceshader_coat_ior_to_F0[multiply]
NG_open_pbr_surface_surfaceshader_coat_ior_to_F0[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_modulated_coat_reflectivity1[multiply]
NG_open_pbr_surface_surfaceshader_one_minus_sqrt_modulated_coat_reflectivity[subtract] --".in2"--> NG_open_pbr_surface_surfaceshader_modulated_coat_ior_ratio[divide]
NG_open_pbr_surface_surfaceshader_sqrt_modulated_coat_reflectivity[sqrt] --".in2"--> NG_open_pbr_surface_surfaceshader_one_minus_sqrt_modulated_coat_reflectivity[subtract]
NG_open_pbr_surface_surfaceshader_coat_roughness_vector[roughness_anisotropy] --".roughness"--> NG_open_pbr_surface_surfaceshader_coat_bsdf[dielectric_bsdf]
NG_open_pbr_surface_surfaceshader_coat_roughnessINT([coat_roughness]) ==.roughness==> NG_open_pbr_surface_surfaceshader_coat_roughness_vector[roughness_anisotropy]
style NG_open_pbr_surface_surfaceshader_coat_roughnessINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_anisotropyINT([coat_anisotropy]) ==.anisotropy==> NG_open_pbr_surface_surfaceshader_coat_roughness_vector[roughness_anisotropy]
style NG_open_pbr_surface_surfaceshader_coat_anisotropyINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_tangent{ifgreater} --".tangent"--> NG_open_pbr_surface_surfaceshader_coat_bsdf[dielectric_bsdf]
NG_open_pbr_surface_surfaceshader_coat_anisotropyINT([coat_anisotropy]) ==.value1==> NG_open_pbr_surface_surfaceshader_coat_tangent[ifgreater]
style NG_open_pbr_surface_surfaceshader_coat_anisotropyINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_tangentINT([geometry_tangent]) ==.in2==> NG_open_pbr_surface_surfaceshader_coat_tangent[ifgreater]
style NG_open_pbr_surface_surfaceshader_geometry_tangentINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_tangent_rotate_normalize[normalize] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_tangent{ifgreater}
style NG_open_pbr_surface_surfaceshader_coat_tangent fill:#F80, color:#111
NG_open_pbr_surface_surfaceshader_coat_tangent_rotate[rotate3d] --".in"--> NG_open_pbr_surface_surfaceshader_coat_tangent_rotate_normalize[normalize]
NG_open_pbr_surface_surfaceshader_geometry_tangentINT([geometry_tangent]) ==.in==> NG_open_pbr_surface_surfaceshader_coat_tangent_rotate[rotate3d]
style NG_open_pbr_surface_surfaceshader_geometry_tangentINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_coat_normalINT([geometry_coat_normal]) ==.axis==> NG_open_pbr_surface_surfaceshader_coat_tangent_rotate[rotate3d]
style NG_open_pbr_surface_surfaceshader_geometry_coat_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_tangent_rotate_degree[multiply] --".amount"--> NG_open_pbr_surface_surfaceshader_coat_tangent_rotate[rotate3d]
NG_open_pbr_surface_surfaceshader_coat_rotationINT([coat_rotation]) ==.in1==> NG_open_pbr_surface_surfaceshader_coat_tangent_rotate_degree[multiply]
style NG_open_pbr_surface_surfaceshader_coat_rotationINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_substrate_attenuated[multiply] --".base"--> NG_open_pbr_surface_surfaceshader_coat_layer[layer]
NG_open_pbr_surface_surfaceshader_thin_film_layer[layer] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_substrate_attenuated[multiply]
NG_open_pbr_surface_surfaceshader_thin_film_bsdf[thin_film_bsdf] --".top"--> NG_open_pbr_surface_surfaceshader_thin_film_layer[layer]
NG_open_pbr_surface_surfaceshader_thin_film_thicknessINT([thin_film_thickness]) ==.thickness==> NG_open_pbr_surface_surfaceshader_thin_film_bsdf[thin_film_bsdf]
style NG_open_pbr_surface_surfaceshader_thin_film_thicknessINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_thin_film_iorINT([thin_film_ior]) ==.ior==> NG_open_pbr_surface_surfaceshader_thin_film_bsdf[thin_film_bsdf]
style NG_open_pbr_surface_surfaceshader_thin_film_iorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_base_substrate[mix] --".base"--> NG_open_pbr_surface_surfaceshader_thin_film_layer[layer]
NG_open_pbr_surface_surfaceshader_base_metalnessINT([base_metalness]) ==.mix==> NG_open_pbr_surface_surfaceshader_base_substrate[mix]
style NG_open_pbr_surface_surfaceshader_base_metalnessINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_metal_bsdf[generalized_schlick_bsdf] --".fg"--> NG_open_pbr_surface_surfaceshader_base_substrate[mix]
NG_open_pbr_surface_surfaceshader_geometry_normalINT([geometry_normal]) ==.normal==> NG_open_pbr_surface_surfaceshader_metal_bsdf[generalized_schlick_bsdf]
style NG_open_pbr_surface_surfaceshader_geometry_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_metal_reflectivity[multiply] --".color0"--> NG_open_pbr_surface_surfaceshader_metal_bsdf[generalized_schlick_bsdf]
NG_open_pbr_surface_surfaceshader_base_colorINT([base_color]) ==.in1==> NG_open_pbr_surface_surfaceshader_metal_reflectivity[multiply]
style NG_open_pbr_surface_surfaceshader_base_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_base_weightINT([base_weight]) ==.in2==> NG_open_pbr_surface_surfaceshader_metal_reflectivity[multiply]
style NG_open_pbr_surface_surfaceshader_base_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_metal_edgecolor[multiply] --".color90"--> NG_open_pbr_surface_surfaceshader_metal_bsdf[generalized_schlick_bsdf]
NG_open_pbr_surface_surfaceshader_specular_colorINT([specular_color]) ==.in1==> NG_open_pbr_surface_surfaceshader_metal_edgecolor[multiply]
style NG_open_pbr_surface_surfaceshader_specular_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_specular_weightINT([specular_weight]) ==.in2==> NG_open_pbr_surface_surfaceshader_metal_edgecolor[multiply]
style NG_open_pbr_surface_surfaceshader_specular_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_main_roughness[roughness_anisotropy] --".roughness"--> NG_open_pbr_surface_surfaceshader_metal_bsdf[generalized_schlick_bsdf]
NG_open_pbr_surface_surfaceshader_specular_anisotropyINT([specular_anisotropy]) ==.anisotropy==> NG_open_pbr_surface_surfaceshader_main_roughness[roughness_anisotropy]
style NG_open_pbr_surface_surfaceshader_specular_anisotropyINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_affected_roughness[mix] --".roughness"--> NG_open_pbr_surface_surfaceshader_main_roughness[roughness_anisotropy]
NG_open_pbr_surface_surfaceshader_specular_roughnessINT([specular_roughness]) ==.bg==> NG_open_pbr_surface_surfaceshader_coat_affected_roughness[mix]
style NG_open_pbr_surface_surfaceshader_specular_roughnessINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_affect_roughness_multiply2[multiply] --".mix"--> NG_open_pbr_surface_surfaceshader_coat_affected_roughness[mix]
NG_open_pbr_surface_surfaceshader_coat_roughnessINT([coat_roughness]) ==.in2==> NG_open_pbr_surface_surfaceshader_coat_affect_roughness_multiply2[multiply]
style NG_open_pbr_surface_surfaceshader_coat_roughnessINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_affect_roughness_multiply1[multiply] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_affect_roughness_multiply2[multiply]
NG_open_pbr_surface_surfaceshader_coat_weightINT([coat_weight]) ==.in2==> NG_open_pbr_surface_surfaceshader_coat_affect_roughness_multiply1[multiply]
style NG_open_pbr_surface_surfaceshader_coat_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_main_tangent{ifgreater} --".tangent"--> NG_open_pbr_surface_surfaceshader_metal_bsdf[generalized_schlick_bsdf]
NG_open_pbr_surface_surfaceshader_specular_anisotropyINT([specular_anisotropy]) ==.value1==> NG_open_pbr_surface_surfaceshader_main_tangent[ifgreater]
style NG_open_pbr_surface_surfaceshader_specular_anisotropyINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_tangentINT([geometry_tangent]) ==.in2==> NG_open_pbr_surface_surfaceshader_main_tangent[ifgreater]
style NG_open_pbr_surface_surfaceshader_geometry_tangentINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_tangent_rotate_normalize[normalize] --".in1"--> NG_open_pbr_surface_surfaceshader_main_tangent{ifgreater}
style NG_open_pbr_surface_surfaceshader_main_tangent fill:#F80, color:#111
NG_open_pbr_surface_surfaceshader_tangent_rotate[rotate3d] --".in"--> NG_open_pbr_surface_surfaceshader_tangent_rotate_normalize[normalize]
NG_open_pbr_surface_surfaceshader_geometry_tangentINT([geometry_tangent]) ==.in==> NG_open_pbr_surface_surfaceshader_tangent_rotate[rotate3d]
style NG_open_pbr_surface_surfaceshader_geometry_tangentINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_normalINT([geometry_normal]) ==.axis==> NG_open_pbr_surface_surfaceshader_tangent_rotate[rotate3d]
style NG_open_pbr_surface_surfaceshader_geometry_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_tangent_rotate_degree[multiply] --".amount"--> NG_open_pbr_surface_surfaceshader_tangent_rotate[rotate3d]
NG_open_pbr_surface_surfaceshader_specular_rotationINT([specular_rotation]) ==.in1==> NG_open_pbr_surface_surfaceshader_tangent_rotate_degree[multiply]
style NG_open_pbr_surface_surfaceshader_specular_rotationINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_dielectric_base[layer] --".bg"--> NG_open_pbr_surface_surfaceshader_base_substrate[mix]
NG_open_pbr_surface_surfaceshader_dielectric_reflection[dielectric_bsdf] --".top"--> NG_open_pbr_surface_surfaceshader_dielectric_base[layer]
NG_open_pbr_surface_surfaceshader_specular_weightINT([specular_weight]) ==.weight==> NG_open_pbr_surface_surfaceshader_dielectric_reflection[dielectric_bsdf]
style NG_open_pbr_surface_surfaceshader_specular_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_specular_colorINT([specular_color]) ==.tint==> NG_open_pbr_surface_surfaceshader_dielectric_reflection[dielectric_bsdf]
style NG_open_pbr_surface_surfaceshader_specular_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_normalINT([geometry_normal]) ==.normal==> NG_open_pbr_surface_surfaceshader_dielectric_reflection[dielectric_bsdf]
style NG_open_pbr_surface_surfaceshader_geometry_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_modulated_specular_ior_ratio[divide] --".ior"--> NG_open_pbr_surface_surfaceshader_dielectric_reflection[dielectric_bsdf]
NG_open_pbr_surface_surfaceshader_one_plus_modulated_specular_reflectivity3[add] --".in1"--> NG_open_pbr_surface_surfaceshader_modulated_specular_ior_ratio[divide]
NG_open_pbr_surface_surfaceshader_modulated_specular_reflectivity3[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_one_plus_modulated_specular_reflectivity3[add]
NG_open_pbr_surface_surfaceshader_sign_specular_ior_minus_one[sign] --".in1"--> NG_open_pbr_surface_surfaceshader_modulated_specular_reflectivity3[multiply]
NG_open_pbr_surface_surfaceshader_specular_ior_minus_one[subtract] --".in"--> NG_open_pbr_surface_surfaceshader_sign_specular_ior_minus_one[sign]
NG_open_pbr_surface_surfaceshader_specular_to_coat_ior_ratio[divide] --".in1"--> NG_open_pbr_surface_surfaceshader_specular_ior_minus_one[subtract]
NG_open_pbr_surface_surfaceshader_specular_iorINT([specular_ior]) ==.in1==> NG_open_pbr_surface_surfaceshader_specular_to_coat_ior_ratio[divide]
style NG_open_pbr_surface_surfaceshader_specular_iorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_modulated_coat_ior[mix] --".in2"--> NG_open_pbr_surface_surfaceshader_specular_to_coat_ior_ratio[divide]
NG_open_pbr_surface_surfaceshader_sqrt_modulated_specular_reflectivity[sqrt] --".in2"--> NG_open_pbr_surface_surfaceshader_modulated_specular_reflectivity3[multiply]
NG_open_pbr_surface_surfaceshader_modulated_specular_reflectivity2[multiply] --".in"--> NG_open_pbr_surface_surfaceshader_sqrt_modulated_specular_reflectivity[sqrt]
NG_open_pbr_surface_surfaceshader_modulated_specular_reflectivity1[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_modulated_specular_reflectivity2[multiply]
NG_open_pbr_surface_surfaceshader_specular_ior_level_clamped[clamp] --".in1"--> NG_open_pbr_surface_surfaceshader_modulated_specular_reflectivity1[multiply]
NG_open_pbr_surface_surfaceshader_specular_ior_levelINT([specular_ior_level]) ==.in==> NG_open_pbr_surface_surfaceshader_specular_ior_level_clamped[clamp]
style NG_open_pbr_surface_surfaceshader_specular_ior_levelINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_specular_ior_level_upper_bound[min] --".high"--> NG_open_pbr_surface_surfaceshader_specular_ior_level_clamped[clamp]
NG_open_pbr_surface_surfaceshader_half_over_specular_F0[divide] --".in2"--> NG_open_pbr_surface_surfaceshader_specular_ior_level_upper_bound[min]
NG_open_pbr_surface_surfaceshader_specular_ior_to_F0[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_half_over_specular_F0[divide]
NG_open_pbr_surface_surfaceshader_specular_ior_to_F0_sqrt[divide] --".in1"--> NG_open_pbr_surface_surfaceshader_specular_ior_to_F0[multiply]
NG_open_pbr_surface_surfaceshader_specular_ior_minus_one[subtract] --".in1"--> NG_open_pbr_surface_surfaceshader_specular_ior_to_F0_sqrt[divide]
NG_open_pbr_surface_surfaceshader_specular_ior_plus_one[add] --".in2"--> NG_open_pbr_surface_surfaceshader_specular_ior_to_F0_sqrt[divide]
NG_open_pbr_surface_surfaceshader_specular_to_coat_ior_ratio[divide] --".in2"--> NG_open_pbr_surface_surfaceshader_specular_ior_plus_one[add]
NG_open_pbr_surface_surfaceshader_specular_ior_to_F0_sqrt[divide] --".in2"--> NG_open_pbr_surface_surfaceshader_specular_ior_to_F0[multiply]
NG_open_pbr_surface_surfaceshader_specular_ior_to_F0[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_modulated_specular_reflectivity1[multiply]
NG_open_pbr_surface_surfaceshader_one_minus_modulated_specular_reflectivity3[subtract] --".in2"--> NG_open_pbr_surface_surfaceshader_modulated_specular_ior_ratio[divide]
NG_open_pbr_surface_surfaceshader_modulated_specular_reflectivity3[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_one_minus_modulated_specular_reflectivity3[subtract]
NG_open_pbr_surface_surfaceshader_main_roughness[roughness_anisotropy] --".roughness"--> NG_open_pbr_surface_surfaceshader_dielectric_reflection[dielectric_bsdf]
NG_open_pbr_surface_surfaceshader_main_tangent{ifgreater} --".tangent"--> NG_open_pbr_surface_surfaceshader_dielectric_reflection[dielectric_bsdf]
NG_open_pbr_surface_surfaceshader_dielectric_substrate[mix] --".base"--> NG_open_pbr_surface_surfaceshader_dielectric_base[layer]
NG_open_pbr_surface_surfaceshader_transmission_weightINT([transmission_weight]) ==.mix==> NG_open_pbr_surface_surfaceshader_dielectric_substrate[mix]
style NG_open_pbr_surface_surfaceshader_transmission_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_dielectric_transmission[dielectric_bsdf] --".fg"--> NG_open_pbr_surface_surfaceshader_dielectric_substrate[mix]
NG_open_pbr_surface_surfaceshader_transmission_colorINT([transmission_color]) ==.tint==> NG_open_pbr_surface_surfaceshader_dielectric_transmission[dielectric_bsdf]
style NG_open_pbr_surface_surfaceshader_transmission_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_normalINT([geometry_normal]) ==.normal==> NG_open_pbr_surface_surfaceshader_dielectric_transmission[dielectric_bsdf]
style NG_open_pbr_surface_surfaceshader_geometry_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_modulated_specular_ior_ratio[divide] --".ior"--> NG_open_pbr_surface_surfaceshader_dielectric_transmission[dielectric_bsdf]
NG_open_pbr_surface_surfaceshader_transmission_roughness[roughness_anisotropy] --".roughness"--> NG_open_pbr_surface_surfaceshader_dielectric_transmission[dielectric_bsdf]
NG_open_pbr_surface_surfaceshader_specular_anisotropyINT([specular_anisotropy]) ==.anisotropy==> NG_open_pbr_surface_surfaceshader_transmission_roughness[roughness_anisotropy]
style NG_open_pbr_surface_surfaceshader_specular_anisotropyINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_affected_transmission_roughness[mix] --".roughness"--> NG_open_pbr_surface_surfaceshader_transmission_roughness[roughness_anisotropy]
NG_open_pbr_surface_surfaceshader_transmission_roughness_clamped[clamp] --".bg"--> NG_open_pbr_surface_surfaceshader_coat_affected_transmission_roughness[mix]
NG_open_pbr_surface_surfaceshader_specular_roughnessINT([specular_roughness]) ==.in==> NG_open_pbr_surface_surfaceshader_transmission_roughness_clamped[clamp]
style NG_open_pbr_surface_surfaceshader_specular_roughnessINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_affect_roughness_multiply2[multiply] --".mix"--> NG_open_pbr_surface_surfaceshader_coat_affected_transmission_roughness[mix]
NG_open_pbr_surface_surfaceshader_main_tangent{ifgreater} --".tangent"--> NG_open_pbr_surface_surfaceshader_dielectric_transmission[dielectric_bsdf]
NG_open_pbr_surface_surfaceshader_opaque_base[mix] --".bg"--> NG_open_pbr_surface_surfaceshader_dielectric_substrate[mix]
NG_open_pbr_surface_surfaceshader_subsurface_weightINT([subsurface_weight]) ==.mix==> NG_open_pbr_surface_surfaceshader_opaque_base[mix]
style NG_open_pbr_surface_surfaceshader_subsurface_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_selected_subsurface[mix] --".fg"--> NG_open_pbr_surface_surfaceshader_opaque_base[mix]
NG_open_pbr_surface_surfaceshader_subsurface_thin_walled[mix] --".fg"--> NG_open_pbr_surface_surfaceshader_selected_subsurface[mix]
NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_reflection[multiply] --".fg"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled[mix]
NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_reflection_bsdf[oren_nayar_diffuse_bsdf] --".in1"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_reflection[multiply]
NG_open_pbr_surface_surfaceshader_base_roughnessINT([base_roughness]) ==.roughness==> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_reflection_bsdf[oren_nayar_diffuse_bsdf]
style NG_open_pbr_surface_surfaceshader_base_roughnessINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_normalINT([geometry_normal]) ==.normal==> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_reflection_bsdf[oren_nayar_diffuse_bsdf]
style NG_open_pbr_surface_surfaceshader_geometry_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_affected_subsurface_color[power] --".color"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_reflection_bsdf[oren_nayar_diffuse_bsdf]
NG_open_pbr_surface_surfaceshader_subsurface_color_nonnegative[max] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_affected_subsurface_color[power]
NG_open_pbr_surface_surfaceshader_subsurface_colorINT([subsurface_color]) ==.in1==> NG_open_pbr_surface_surfaceshader_subsurface_color_nonnegative[max]
style NG_open_pbr_surface_surfaceshader_subsurface_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_gamma[add] --".in2"--> NG_open_pbr_surface_surfaceshader_coat_affected_subsurface_color[power]
NG_open_pbr_surface_surfaceshader_coat_gamma_multiply[multiply] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_gamma[add]
NG_open_pbr_surface_surfaceshader_coat_clamped[clamp] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_gamma_multiply[multiply]
NG_open_pbr_surface_surfaceshader_coat_weightINT([coat_weight]) ==.in==> NG_open_pbr_surface_surfaceshader_coat_clamped[clamp]
style NG_open_pbr_surface_surfaceshader_coat_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_brdf_factor[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_reflection[multiply]
NG_open_pbr_surface_surfaceshader_subsurface_colorINT([subsurface_color]) ==.in1==> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_brdf_factor[multiply]
style NG_open_pbr_surface_surfaceshader_subsurface_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_one_minus_subsurface_anisotropy[subtract] --".in2"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_brdf_factor[multiply]
NG_open_pbr_surface_surfaceshader_subsurface_anisotropyINT([subsurface_anisotropy]) ==.in2==> NG_open_pbr_surface_surfaceshader_one_minus_subsurface_anisotropy[subtract]
style NG_open_pbr_surface_surfaceshader_subsurface_anisotropyINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_transmission[multiply] --".bg"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled[mix]
NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_transmission_bsdf[translucent_bsdf] --".in1"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_transmission[multiply]
NG_open_pbr_surface_surfaceshader_geometry_normalINT([geometry_normal]) ==.normal==> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_transmission_bsdf[translucent_bsdf]
style NG_open_pbr_surface_surfaceshader_geometry_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_affected_subsurface_color[power] --".color"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_transmission_bsdf[translucent_bsdf]
NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_btdf_factor[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_transmission[multiply]
NG_open_pbr_surface_surfaceshader_subsurface_colorINT([subsurface_color]) ==.in1==> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_btdf_factor[multiply]
style NG_open_pbr_surface_surfaceshader_subsurface_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_one_plus_subsurface_anisotropy[add] --".in2"--> NG_open_pbr_surface_surfaceshader_subsurface_thin_walled_btdf_factor[multiply]
NG_open_pbr_surface_surfaceshader_subsurface_anisotropyINT([subsurface_anisotropy]) ==.in2==> NG_open_pbr_surface_surfaceshader_one_plus_subsurface_anisotropy[add]
style NG_open_pbr_surface_surfaceshader_subsurface_anisotropyINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_subsurface_bsdf[subsurface_bsdf] --".bg"--> NG_open_pbr_surface_surfaceshader_selected_subsurface[mix]
NG_open_pbr_surface_surfaceshader_subsurface_anisotropyINT([subsurface_anisotropy]) ==.anisotropy==> NG_open_pbr_surface_surfaceshader_subsurface_bsdf[subsurface_bsdf]
style NG_open_pbr_surface_surfaceshader_subsurface_anisotropyINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_normalINT([geometry_normal]) ==.normal==> NG_open_pbr_surface_surfaceshader_subsurface_bsdf[subsurface_bsdf]
style NG_open_pbr_surface_surfaceshader_geometry_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_affected_subsurface_color[power] --".color"--> NG_open_pbr_surface_surfaceshader_subsurface_bsdf[subsurface_bsdf]
NG_open_pbr_surface_surfaceshader_subsurface_radius_scaled[multiply] --".radius"--> NG_open_pbr_surface_surfaceshader_subsurface_bsdf[subsurface_bsdf]
NG_open_pbr_surface_surfaceshader_subsurface_radiusINT([subsurface_radius]) ==.in2==> NG_open_pbr_surface_surfaceshader_subsurface_radius_scaled[multiply]
style NG_open_pbr_surface_surfaceshader_subsurface_radiusINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_subsurface_radius_vector[convert] --".in1"--> NG_open_pbr_surface_surfaceshader_subsurface_radius_scaled[multiply]
NG_open_pbr_surface_surfaceshader_subsurface_radius_scaleINT([subsurface_radius_scale]) ==.in==> NG_open_pbr_surface_surfaceshader_subsurface_radius_vector[convert]
style NG_open_pbr_surface_surfaceshader_subsurface_radius_scaleINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_subsurface_selector[convert] --".mix"--> NG_open_pbr_surface_surfaceshader_selected_subsurface[mix]
NG_open_pbr_surface_surfaceshader_geometry_thin_walledINT([geometry_thin_walled]) ==.in==> NG_open_pbr_surface_surfaceshader_subsurface_selector[convert]
style NG_open_pbr_surface_surfaceshader_geometry_thin_walledINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_diffuse_bsdf[oren_nayar_diffuse_bsdf] --".bg"--> NG_open_pbr_surface_surfaceshader_opaque_base[mix]
NG_open_pbr_surface_surfaceshader_base_weightINT([base_weight]) ==.weight==> NG_open_pbr_surface_surfaceshader_diffuse_bsdf[oren_nayar_diffuse_bsdf]
style NG_open_pbr_surface_surfaceshader_base_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_base_roughnessINT([base_roughness]) ==.roughness==> NG_open_pbr_surface_surfaceshader_diffuse_bsdf[oren_nayar_diffuse_bsdf]
style NG_open_pbr_surface_surfaceshader_base_roughnessINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_geometry_normalINT([geometry_normal]) ==.normal==> NG_open_pbr_surface_surfaceshader_diffuse_bsdf[oren_nayar_diffuse_bsdf]
style NG_open_pbr_surface_surfaceshader_geometry_normalINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_affected_diffuse_color[power] --".color"--> NG_open_pbr_surface_surfaceshader_diffuse_bsdf[oren_nayar_diffuse_bsdf]
NG_open_pbr_surface_surfaceshader_base_color_nonnegative[max] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_affected_diffuse_color[power]
NG_open_pbr_surface_surfaceshader_base_colorINT([base_color]) ==.in1==> NG_open_pbr_surface_surfaceshader_base_color_nonnegative[max]
style NG_open_pbr_surface_surfaceshader_base_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_gamma[add] --".in2"--> NG_open_pbr_surface_surfaceshader_coat_affected_diffuse_color[power]
NG_open_pbr_surface_surfaceshader_coat_attenuation[mix] --".in2"--> NG_open_pbr_surface_surfaceshader_coat_substrate_attenuated[multiply]
NG_open_pbr_surface_surfaceshader_coat_colorINT([coat_color]) ==.fg==> NG_open_pbr_surface_surfaceshader_coat_attenuation[mix]
style NG_open_pbr_surface_surfaceshader_coat_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coat_weightINT([coat_weight]) ==.mix==> NG_open_pbr_surface_surfaceshader_coat_attenuation[mix]
style NG_open_pbr_surface_surfaceshader_coat_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_emission_edf[mix] --".edf"--> NG_open_pbr_surface_surfaceshader_shader_constructor[surface]
NG_open_pbr_surface_surfaceshader_coat_weightINT([coat_weight]) ==.mix==> NG_open_pbr_surface_surfaceshader_emission_edf[mix]
style NG_open_pbr_surface_surfaceshader_coat_weightINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_coated_emission_edf[generalized_schlick_edf] --".fg"--> NG_open_pbr_surface_surfaceshader_emission_edf[mix]
NG_open_pbr_surface_surfaceshader_one_minus_coat_F0[subtract] --".rrr -> .color0"--> NG_open_pbr_surface_surfaceshader_coated_emission_edf[generalized_schlick_edf]
NG_open_pbr_surface_surfaceshader_coat_ior_to_F0[multiply] --".in2"--> NG_open_pbr_surface_surfaceshader_one_minus_coat_F0[subtract]
NG_open_pbr_surface_surfaceshader_coat_tinted_emission_edf[multiply] --".base"--> NG_open_pbr_surface_surfaceshader_coated_emission_edf[generalized_schlick_edf]
NG_open_pbr_surface_surfaceshader_coat_colorINT([coat_color]) ==.in2==> NG_open_pbr_surface_surfaceshader_coat_tinted_emission_edf[multiply]
style NG_open_pbr_surface_surfaceshader_coat_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_uncoated_emission_edf[uniform_edf] --".in1"--> NG_open_pbr_surface_surfaceshader_coat_tinted_emission_edf[multiply]
NG_open_pbr_surface_surfaceshader_emission_weight[multiply] --".color"--> NG_open_pbr_surface_surfaceshader_uncoated_emission_edf[uniform_edf]
NG_open_pbr_surface_surfaceshader_emission_colorINT([emission_color]) ==.in1==> NG_open_pbr_surface_surfaceshader_emission_weight[multiply]
style NG_open_pbr_surface_surfaceshader_emission_colorINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_emission_luminanceINT([emission_luminance]) ==.in2==> NG_open_pbr_surface_surfaceshader_emission_weight[multiply]
style NG_open_pbr_surface_surfaceshader_emission_luminanceINT fill:#0CF, color:#111
NG_open_pbr_surface_surfaceshader_uncoated_emission_edf[uniform_edf] --".bg"--> NG_open_pbr_surface_surfaceshader_emission_edf[mix]
NG_open_pbr_surface_surfaceshader_opacity_luminance[luminance] --".r -> .opacity"--> NG_open_pbr_surface_surfaceshader_shader_constructor[surface]
NG_open_pbr_surface_surfaceshader_geometry_opacityINT([geometry_opacity]) ==.in==> NG_open_pbr_surface_surfaceshader_opacity_luminance[luminance]
style NG_open_pbr_surface_surfaceshader_geometry_opacityINT fill:#0CF, color:#111